The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
One challenge in deploying distributed systems is that communication links between the different components of a distributed system may not always be reliable. For example, communication links are susceptible to failures resulting from a wide variety of problems, including damaged cables, faulty communication interfaces, signal interference or degradation, failed relay systems, power shortages, and limited bandwidth.
Unreliable communication links cause many problems in systems that rely on one or a limited number of servers to coordinate the activity of other devices. For example, an irrigation control system may rely on a server to issue irrigation commands to wireless irrigation controllers deployed throughout a farm. A connection failure between the server and a controller could result in the controller failing to receive a command to, for instance, open or close an irrigation valve, with the potential consequence of a failed crop.
It is therefore desirable to provide more robust and fault-tolerant techniques for coordinating the activities of devices in systems with potentially unreliable communication links.